<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Application binary interface</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Application_binary_interface"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Application_binary_interface rootpage-Application_binary_interface skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Application binary interface</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p>En <a href="Informatique" title="Informatique">informatique</a>, une <i><b>Application Binary Interface</b></i> (<b>ABI</b>, interface binaire-programme), décrit une <a href="Interface_(informatique)" title="Interface (informatique)">interface</a> de <a href="Bas_niveau" class="mw-redirect" title="Bas niveau">bas niveau</a> entre les <a href="Logiciel" title="Logiciel">applications</a> et le <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a>, entre une application et une <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque</a> ou bien entre différentes parties d’une application. Une ABI diffère d’une <a href="Interface_de_programmation" title="Interface de programmation">API</a>, puisqu'une API définit une interface entre du <a href="Code_source" title="Code source">code source</a> et une bibliothèque, de façon à assurer que le code source fonctionnera (<a href="Compilateur" title="Compilateur">compilera</a>, si applicable) sur tout système supportant cette API.
</p><p>Une ABI définit notamment des conventions d'appel des fonctions pour une architecture donnée. C'est l'ABI qui définit le rôle précis des registres généraux (paramètres de fonctions, résultats de fonctions, variables temporaires ?) et la responsabilité de leur intégrité (appelant ou appelé). C'est l'ABI qui définit la structure de la pile, notamment l'organisation des emplacements réservés aux paramètres supplémentaires d'appel d'une fonction, à la sauvegarde de certains registres, à l'allocation de mémoire dynamiquement sur la pile (taille connue à la compilation) selon la portée de l'identifiant.
</p><p>Une ABI est une convention qui lie une architecture, un langage de programmation et un compilateur.
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_également"><span id="Voir_.C3.A9galement"></span>Voir également</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Liens_internes">Liens internes</h3></div>
<ul><li><a href="Interface_de_programmation" title="Interface de programmation">API</a> (Interface de programmation)</li>
<li><a href="Interface_(informatique)" title="Interface (informatique)">Interface (informatique)</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> Quelques pensées sur <a rel="nofollow" class="external text" href="http://qt-labs.developpez.com/cpp/abis/compatibilite-binaire/">la compatibilité binaire</a> et sur <a rel="nofollow" class="external text" href="http://qt-labs.developpez.com/cpp/abis/convention-appel/">les conventions d'appel</a>, deux points importants des ABI.</li>
<li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> L’ABI <a rel="nofollow" class="external text" href="https://gitlab.com/x86-psABIs/x86-64-ABI">AMD64</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2020-12-01" href="https://fr.wikipedia.org/wiki/?title=Application_binary_interface&oldid=177175745">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>